/**
Copyright [2009] [Julian Gamble] 

Licensed under the Apache License, Version 2.0 (the "License"); 
you may not use this file except in compliance with the License. 
You may obtain a copy of the License at 

	http://www.apache.org/licenses/LICENSE-2.0 
	
Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an "AS IS" BASIS, 
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
See the License for the specific language governing permissions and 
limitations under the License. 
 **/
package cruiseprojectlist.domain;

import cruiseprojectlist.service.ProjectPreferencesService;

public class ProjectPerformance {
	
	private static final String RED = "RED";
	private static final String ORANGE = "#ff9900";
	private static final String GREEN = "LIME";

	
	private String projectName = null;
	private String coberturaResultsFilePath = null;
	
	private ProjectPreferencesService projectPreferencesService = ProjectPreferencesService.getInstance();

	private ProjectPreference projectPreference = null;
	private ProjectScores projectScores = null;
	
	
	public void setProjectPreference(ProjectPreference projectPreference) {
		this.projectPreference = projectPreference;
	}


	public ProjectPerformance(String projectName) {
		this.projectName = projectName;
		this.projectPreference = projectPreferencesService.getProjectPreferences(projectName);
		this.projectScores = new ProjectScores(projectPreference.getCoberturaFilePath());
	}

	public String getProjectName() {
		return projectName;
	}

	public String getCoberturaResultsFilePath() {
		return coberturaResultsFilePath;
	}


	public ProjectPreference getProjectPreference() {
		return projectPreference;
	}

	public ProjectScores getProjectScores() {
		return projectScores;
	}

	public String getCoverageColour() {
		if (projectScores.getCoverageScore() * 100 < projectPreference.getCoverageMinimum())
			return RED;
		else if (projectScores.getCoverageScore() * 100 < projectPreference.getCoverageTarget())
			return ORANGE;
		else
			return GREEN;
	}

	public String getComplexityColour() {
		if (projectScores.getComplexityScore() > projectPreference.getComplexityMinimum())
			return RED;
		else if (projectScores.getComplexityScore() > projectPreference.getComplexityTarget())
			return ORANGE;
		else 
			return GREEN;
	}	
}
